草庐IT

c++ - 将 std::string 解释为 char_type 的 std::vector?

全部标签

string - 去我怎样才能有效地将字符串分成几部分

我正在与字符串拆分作斗争。我想用通配符将字符串拆分成一个slice,但这个slice也应该包含这个通配符。例如:/applications/{name}/tokens/{name}应该拆分为[/applications/{name}/tokens/{name}]等这是我写的一个示例代码,但它不能正常工作,我也不满意。https://play.golang.org/p/VMOsJeaI4l有一些示例路由需要测试。方法splitPath将路径拆分为多个部分并同时显示:之前和之后。 最佳答案 解决方法:varvalidPathRe=reg

c - O_NONBLOCK SOCK_STREAM 限制为 8192

我正在从C程序写入SOCK_STREAM正在从go程序监听的Unix域套接字,使用net.Listen("unix",sockname).当我将套接字设置为O_NONBLOCK使用fcntl(),我看到C程序在第一次写入时只写入了8192字节。失败后,我监控并回写剩余数据,但我服务器上读取的数据在这种情况下是无效的。当我不使用O_NONBLOCK时,然后整个8762字节被写在一个单一的写入中,一切都按预期工作。C客户端套接字连接if((fd=socket(AF_UNIX,SOCK_STREAM,0))==-1){return;}intflags=fcntl(fd,F_GETFL,0);

c - 为什么我用cgo的时候报错 "undefined reference to ` add2”

目录如下:-包括测试.h-liblibmytest.so-源代码测试.gotest.go代码如下:packagemain/*#cgoCFLAGS:-I../include#cgoLDFLAGS:-L../lib-lmytest#include"Test.h"*/import"C"funcmain(){C.add2(10,10)}当我使用gobuildtest.go时,控制台报告:#command-line-arguments/tmp/go-build168903458/command-line-arguments/_obj/test.cgo2.o:在函数_cgo_9efddd4c1a4

golang 中的 C long double

我正在将算法从C移植到Go。我有点困惑。这是C函数:voidgauss_gen_cdf(uint64_tcdf[],longdoublesigma,intn){inti;longdoubles,d,e;//Calculations...for(i=1;i并在for循环中将值“s”分配给数组cdf中的元素“x”。这怎么可能?据我所知,longdouble是float64(在Go上下文中)。所以我不应该能够编译C代码,因为我正在将一个longdouble分配给一个只包含uint64元素的数组。但C代码运行良好。那么有人可以解释为什么这是有效的吗?非常感谢。更新:函数的原始C代码可以在这里找

string - 有什么方法可以在打印语句中没有 7、-48 .... 等的情况下以漂亮的方式显示输出?

代码如下fmt.Printf("%7s:%-48s\n","IQN",annotations.Iqn)fmt.Printf("%7s:%-16s\n","Volume",args[0])fmt.Printf("%7s:%-15s\n","Portal",annotations.TargetPortal)fmt.Printf("%7s:%-6s\n\n","Size",annotations.VolSize) 最佳答案 没有,没有。但是您可以编写一个实用函数来自动执行所有这些操作,您需要做的就是传递您想要pretty-print的键值

Golang unix 套接字 : registering same type for RPC on different sockets?

我在Go中工作,对使用unix套接字有点陌生。尝试搜索类似的问题,但找不到任何内容,如果之前已经回答过,我们深表歉意。我想用unixsockets模拟一个机器集群进行测试。我正在测试我的Raft实现,所以我想在不同的unix套接字上注册相同类型的多个对象(一个庞大的结构)。但是看我写的一个简单的例子,效果似乎不是我想要的:为同一个导出方法拨不同的套接字似乎在单个端口上崩溃:packagemainimport("net""fmt""net/rpc""log""sync")typeServerstruct{namestring}typeSpeakArgsstruct{}typeSpeakR

c - 如何从 Go 函数返回 C 指针?

我有疑问是否可以从C上的Go函数指针返回?例如main.c可以是:structopen_db_returndb_ptr=open_db(db_path);GoSlicebacket={"DB",2,2};GoSlicekey={"CONFIG",6,6};structget_value_returnval=get_value(db_ptr.r0,backet,key);close_db(db_ptr.r0);接下来是Go代码://exportopen_dbfuncopen_db(pathstring)(interface{},error){db,err:=db.Open(path,06

json - 解码 map[string]interface{} 时出现 mgo 错误

我想在一个结构中存储一个任意的json对象:typeCstruct{Namestring`json:"name"bson:"name"`Configmap[string]interface{}`json:"config"bson:"config"`}当我存储任何深度嵌套的json对象时,这工作正常,但是当我检索它并且mgo尝试解码它时,我得到:Unmarshalcan'tdealwithstructvalues.Useapointer.我不确定指针应该是什么。如果我将其更改为:Config*map[string]interface{}错误发生在这里:https://github.com

mysql - golang mysql DESCRIBE表导致driver.Value type nil错误

我第一次尝试使用golang查询MySQL数据库,但是当我运行命令gorunmain.go时出现以下错误。2017/10/2221:06:58sql:Scanerroroncolumnindex4:unsupportedScan,storingdriver.Valuetypeintotype*stringexitstatus1这是我的main.go主.gopackagemainimport("log""database/sql")import_"github.com/go-sql-driver/mysql"vardb*sql.DBvarerrerror//mainfunctiontob

go - 如何通过 golang 中的 CGO 将 Go 字符串复制到 C char *?

我想通过CGO将一个Go字符串复制到一个char*中。我可以这样做吗?funccopy_string(cstr*C.char){str:="foo"C.GoString(cstr)=str} 最佳答案 根据cgodocumentation您需要使用C.CString函数将Go字符串转换为C字符串:cstr=C.CString(str)请注意,C.CString函数会为您分配内存,但不会释放它,因此您有责任通过以下调用释放内存:C.free(unsafe.Pointer(cstr)) 关于